package com.itfenghuang.day18;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
会话管理技术
 */
public class A05_Cookid extends HttpServlet {
/*
1.概述
    保存在客户端浏览器的缓存文件
2.Cookie快速入门的步骤
    1).创建Cookie对象并绑定数据
    2).发送Cookie浏览器
    3).当再次访问服务器时,浏览器发送Cookie到服务器
3.案例:记录最后一次访问网站的时间,当访问Servlet的时候如果是第一次访问,友好提示:欢迎首次访问
        则提示:欢迎回家加上你上次的访问时间
4.cookie名称显示:只能够包含ASCLL码表中的数字不能有逗号,分号,空格与$开头
    cookie值支持中文,不建议使用中文
    ie6 cookie数量有限制 单个网站cookie数量不能超过20个,所有网站的cookie不能超过200个
    单个cookie的大小不超过4kb
5.设置Cookie的存活时间
    maxAge 最大的存活时间
        setMaxAge(int expiry) 参数: 秒
        正数:多少秒之后失效
        0:立即清除
        负数:当前会话有效,关闭浏览器后失效
 */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        入门案例(req, resp);
        resp.setContentType("text/html;charset=utf-8");
//创建Cookie
        Cookie cookie = new Cookie("time", System.currentTimeMillis() + "");
//将cookie发送到浏览器
        resp.addCookie(cookie);
        PrintWriter pw = resp.getWriter();
//获取cookie对象
        Cookie[] cookies = req.getCookies();
        boolean b=false;
        for (Cookie c : cookies) {
            if ("time".equals(c.getName())){
//                第二次或多次访问
                b=true;
                String value = c.getValue();
                long l = Long.parseLong(value);
                Date date = new Date(l);
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String format = sdf.format(date);
                pw.write("欢迎回来,你上次访问的时间是:"+format);
            }
        }
//        第一次访问
        if (b==false){
            pw.write("欢迎你首次访问");
        }
    }

    private void 入门案例(HttpServletRequest req, HttpServletResponse resp) {
        //创建对象
        Cookie cookie = new Cookie("name", "钺钺");
//将cookie对象发送到浏览器
        resp.addCookie(cookie);
//再次获取cookie
        Cookie[] cookies = req.getCookies();
//判断 Cookie[]是否为空
        if (cookies!=null && cookies.length>0){
            for (Cookie s : cookies) {
//获取cookie的名称和值
                System.out.println(s.getName()+s.getValue());
            }
        }
        System.out.println("执行了么");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
